온라인 교육

소프트웨어 공학 개론

 

4주차 객체지향 개념과 클래스 다이어그램

 

 

이번 시간에 다룰 내용은 객체지향 패러다임의 기본이 되는 객체지향 개념과 UML에서 중추적인 모델인 클래스다이어그램입니다. 객체지향 프로그램의 기본 단위가 되는 것이 클래스이며 클래스를 잘 정하려면 객체지향 근본 개념을 잘 이해하여야 합니다. 또한 UML의 클래스 다이어그램은 상세하게 설계하기 위하여 필수적인 요소입니다.

 

객체지향 패러다임에서 사용되는 중요한 기본 개념은 다음과 같은 것입니다.

 

Ÿ   다형성 - 같은 이름이 여러 가지 다른 의미를 품을 있음

Ÿ   상속 - 유사 개념의 클래스를 중복 정의하지 않고 상속 정의

Ÿ   추상클래스 - 인스턴스가 없는 클래스로써 클래스 등의 공통 특성을 정의한 .

Ÿ   동적 바인딩 - 다형성을 가진 구문적 엔티티가 런타임에 구체적인 대상과 연결되는 .

Ÿ   함수 오버로딩 - 하나의 클래스 안에 같은 이름의 함수가 쓰이는 용도에 따라(파라미터의 ) 다르게 정의된 .

 

클래스 찾기

 

함수가 주축이 되는 절차지향 프로그램과는 달리 객체지향 프로그램의 기본 단위는 클래스이다. 따라서 클래스는 객체지향 프로그램의 구조와 실행 속도를 좌우하는 중요한 요소이다. 복잡한 프로그램의 논리적인 단위가 되며 설계 작업에서 다루어야 할 독립적인 모듈이기 때문이다.

 

결국 객체지향 분석, 설계 작업에서 다루어야 할 첫 과제는 적절한 클래스를 찾고 클래스 안에 담아야 할 속성과 오퍼레이션을 찾는 일이다.

 

클래스가 될만한 것은 다음과 같은 카테고리로 나눌 수 있다.

 

v  사물 - 가장 찾기 쉬운 것으로 눈에 보이는 실세계의 개체들이다. 응용 분야가 주어진다면 지나치기 어려운 것들이다. 예를 들어 항공기, , 엔진, 엘리베이터 등.

v  역할 - 사람이나 기관의 역할에 해당되는 것으로 예를 들면 다음과 같은 것들이다. 의사, 배송직원, 고객, 부서, 환자, 입주자, 사원, 납세자, 소비자, 계좌주인, 관리자, 수탁자

v  사건 - 특정한 시각에 일어난 사건이나 이벤트를 표시한다. 다음과 같은 것들이 여기에 해당된다. 예를 들면 항공편, 사고, 공연, 이벤트, 시스템 장애, 서비스 호출(제품AS를 위한).

v  인터랙션 - 인터랙션은 일반적으로거래(transaction)’계약(contract)’과 같은 것을 말한다. 즉 두 개 이상의 클래스와 관련된다. 예를 들면 구매(구매자, 판매자, 상품이 관련됨), 신용카드 결재(계좌와 구매 사이의 관계), 간선(그래프의 두 정점과의 관계)

v  명세 - 명세 클래스는 모든 것들이 어떤 특성을 공유할 때 사용된다. 예를 들면 같은 제목의 책이 여러 권 있을 때 두 책의 제목은 공유한다. 예를 들면 보험 상품(구매한 보험 증권에 대한 정보를 담고 있음), 서적 상품(구매할 수 있는 책 정보를 나타냄), 신용카드 종류(지불에 사용될 신용카드의 종류)

 

관계 찾기

 

클래스는 홀로 존재하지 않고 서로 관련되어 있다. 도메인의 지식을 정형화 하기 위하여 도메인에 있는 개념적 요소들이 어떻게 연관되어 있는지 파악하여야 하며 이를 모델에서 정확하게 표현된 관계로 반영하여야 한다.

UML 관계는 연관(association), 일반화(generalizaton), 의존(dependency)으로 나눌 수 있다. 구조적 모델에서 연관은 클래스 속하는 객체 사이의 관계이며 일반화는 클래스 사이의 상속 관계를 나타내며 의존은 다른 클래스의 객체가 사용되어 구문 사이에 컴파일 의존 관계를 나타낸다. 집합(aggregation) 또는 합성(composition) 관계는 연관의 큰 범주에 들어가는 관계로 전체와 부분과의 관계를 뜻한다.


그림 1. 클래스의 연관 관계